<?php
namespace Util;
class WxTemplateMessage
{
    /**
     * 发送模板消息
     * @param $data
     * @return mixed
     */
    public static function send_template_message($data)
    {
        $access_token = self::get_access_token();
        $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$access_token";
        $res = self::http_request($url, $data);
        return json_decode($res, true);
    }

    private static function get_access_token()
    {
        $app_id = \Util\Config::get('weixin_appid', 'Env');
        $app_secret = \Util\Config::get('weixin_appsecret', 'Env');
        $res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $app_id . '&secret=' . $app_secret);
        $res = json_decode($res, true);
        $access_token = $res['access_token'] ?? '';
        return $access_token;
    }

    private static function http_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);//需要获取的URL地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);//禁用后cURL将终止从服务端进行验证
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);//检查服务器SSL证书中是否存在一个公用名(common name)
        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);//启用时会发送一个常规的POST请求
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//	全部数据使用HTTP协议中的"POST"操作来发送
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//将curl_exec()获取的信息以文件流的形式返回，而不是直接输出。 returntransfer
        $output = curl_exec($curl);
        if (curl_errno($curl)) {
            return 'Errno' . curl_error($curl);
        }
        curl_close($curl);
        return $output;
    }
}